자바스크립트의 객체를 배우게되면 함께 배우는 용어들이 존재한다. 그 중에서 인스턴스에 대하여 알아보고 함께 사용되는 연산자
instanceof를 알아보자.
# 인스턴스란?
인스턴스란 객체에서 생성된 또 다른 객체를 의미한다. 자세한 내용은 아래 링크를 확인하면 더욱 자세한 내용을 알 수 있으니 참고하자!
* 바로가기 링크 -> 객체지향언어에서 인스턴스 알아보기자바스크립트는
instanceof 연산자가 존재한다. 이 연산자는 생성된 인스턴스 객체가 어떤 생성자 함수를 사용하여 생성되었는지 확인하고 불리언값으로 반환하여 주는 유용한 연산자이다. 이 연산자를 사용해 생성자 함수를 확인하는 과정을 예제를 통하여 알아보고자 한다.
먼저 생성자 함수가 필요하다. 이에 대한 코드는 아래와 같다.
Fruit = function(name) {
this.name = name;
}
Animal = function(name) {
this.name = name;
}
우선 비교하기 위한 생성자 함수 두 개를 준비한다. 위 두개의 생성자함수 중 하나를 사용하여 한개의 인스턴스를 생성할 것이다. 생성된 인스턴스를 instanceof 연산자를 사용할 경우 어떤 값이 나오는지 확인이 필요하다.
fruit1 = new Fruit('banana');
fruit2 = new Animal('monkey');
fruit1 instanceof Fruit
// true를 반환함
fruit1 instanceof Animal
// false를 반환함
위에서는 fruit1과 fruit2 두 개의 인스턴스를 생성하였고 각각 다른 생성자 함수를 사용하였다. 그 중에서 fruit1 인스턴스는 Fruit 생성자 함수를 사용하였기 때문에 #1과 같이 확인해 볼 수 있다. 그 결과 당연히 true를 반환하였다.
이를 통해 어떤 생성자 함수를 사용하였는지 확인할 수 있는 instanceof 연산자를 예제를 통해 알아보았다. instanceof 연산자가 어떻게 동작하는지는 아래의 과정을 통하여 이루어진다.
1. 인스턴스가 가지고 있는 __proto__ 정보를 가져온다.
2. 객체가 가진 __proto__와 함수의 prototype를 비교한다.
3. 동일한 값을 찾기위해 체인 영역의 전체를 2번의 과정으로 반복한다.위와 같은 순서를 통하여 원하는 정보를 객체 안에서 찾는 연산과정을 가지게 된다.